package com.ruibo.modules.system.service;

import com.ruibo.modules.system.service.dto.SysUserDto;
import com.ruibo.modules.system.domain.SysUser;
import java.util.List;

import com.ruibo.modules.system.criteria.UserQueryCriteria;
import org.springframework.data.domain.Pageable;

/**
 * (SysUser)表服务接口
 *
 * @author sunfeng
 * @since 2020-04-17 13:33:19
 */
public interface SysUserService {
   /**
     * 根据ID查询
     * @param userId /
     * @return /
     */
    SysUserDto queryById(Long userId);
     /**
     *  分页查询
     * @param offset
     * @param limit
     * @return
     */
    Object queryAllByLimit(int offset, int limit);
       /**
     * 创建
     * @param sysUser /
     * @return /
     */
    SysUserDto save(SysUserDto sysUser);
    /**
     * 跟新
     * @param sysUser /
     * @return /
     */
    SysUserDto update(SysUserDto sysUser);
       /**
     * 根据id删除
     * @param userId /
     * @return /
     */
    boolean deleteById(Long userId);
        /**
     * 查询所有
     * @return /
     */
     List<SysUserDto> findAll();

    /**
     * 根据用户名查询用户信息
     * @param username
     * @return
     */
    SysUserDto findByName(String username);

    /**
     * 根据查询条件获取用户的分页信息
     * @param criteria
     * @param pageable
     * @return
     */
    Object queryAll(UserQueryCriteria criteria, Pageable pageable);

    /**
     * 校验用户是否允许操作
     *
     * @param user 用户信息
     */
    public void checkUserAllowed(SysUserDto user);


    public int updateUserStatus(SysUser user);
    /**
     * 校验用户名称是否唯一
     *
     * @param userName 用户名称
     * @return 结果
     */
    String checkUserNameUnique(String userName);
    /**
     * 校验手机号码是否唯一
     *
     * @param phoneNumber 电话号
     * @return 结果
     */
    String checkPhoneUnique(String phoneNumber);
  /**
   * 校验邮箱号码是否唯一
   *
   * @param email 邮箱
   * @return 结果
   */
 String checkEmailUnique(String email);


    void deleteUserByIds(Long[] userIds);
}
